.op







                              ZCPR3

                             and the

                       EVOLUTION TO ZCPR4







                    Trenton Computer Festival

                         April 11, 1987


                          RICHARD CONN








             --------------------------------------

   ZCPR3, SYSLIB, Z3LIB, VLIB, TERM III, DISCAT, Z-System, ZOS

                 are Trademarks of Echelon, Inc.

     Turbo Modula-2 is a Trademark of Borland International
                    (or Echelon -- not sure)

       Ada is a Trademark of the US Department of Defense,
                    Ada Joint Program Office

.he                ZCPR3 and the Evolution to ZCPR4




              ZCPR4 is a continuation of many years

        of work, effort, and giving to the Public Domain

                    and the "User Community"




                              ZCPR1
                   (a group effort in the PD)

                                |
                                V

                              ZCPR2
                (an individual effort in the PD)

                                |
                                V

                              ZCPR3
         (an individual effort, in the "User Community")

                                |
                                V

                        ZCPR3 Commercial
          (an effort by Echelon and myself, commercial)

                |                                | 
                V                                V

         ZCPR 3.3 et al    <- Today ->         ZCPR4
     (an effort by Echelon,             (an individual effort,
      commercial and "User")              release unknown)




                   The Magnitude of the Effort

                   is Increasing Dramatically





         Files
         -----

     1000 or more   |                             * ZCPR4
                    |
          900       |
                    |
          800       |
                    |
          700       |
                    |
          600       |                        * ZCPR3 3.3
                    |
          500       |                   * ZCPR3
                    |
          400       |
                    |
          300       |              * ZCPR2
                    |
          200       |
                    |
          100       |
                    |
            1       |         * ZCPR1
                    ---------------------------------------------




     Note: I can't speak for the independent Echelon effort
                    with ZCPR 3.3 and beyond

 Note: The ZCPR3 effort and beyond includes TERM III and beyond












                       ZCPR 3.3 and beyond

                        as well as ZCPR4

       represent a continued interest in the ZCPR concept





   The ZCPR concept continues to meet a part of my (our) needs

                               so

         there is a continued interest in supporting it



          ZCPR4 follows in the path of its predecessors



         UPWARD COMPATABILITY IS NOT AN ISSUE WITH ZCPR4!

         THE ISSUE WITH ZCPR4 IS THE DEVELOPMENT OF NEW

       AND REFINED CONCEPTS OVER THOSE OF ITS PREDECESSORS



                           Hypothesis
                           ----------

         RETAINING A REQUIREMENT OF UPWARD COMPATABILITY

                   RESTRICTS FREEDOM OF GROWTH


Compatability
-------------
    CP/M                      ZCPR1
                   (a group effort in the PD)

                                |
                                V

    CP/M                      ZCPR2
                (an individual effort in the PD)

                                |
                                V

    CP/M                      ZCPR3
         (an individual effort, in the "User Community")

                                |
                                V

CP/M & ZCPR3            ZCPR3 Commercial
          (an effort by Echelon and myself, commercial)

                                | 
                                V

    CP/M                      ZCPR4
             (an individual effort, release unknown)







                          A Digression
                          ------------


               To understand the philosophy of the

        Evolution to ZCPR4, it is necessary to understand

             the nature of my computing environment





                  My computing environment ...





              A Sketch of the Ongoing ZCPR4 Effort
              ------------------------------------



     Concept                                      Vaporware?
     -------                                      ----------

 1   No assembly required                             N*

 2   New basics

          ZCPR4 Command Processor                   Y/N*

          BDOS                                        Y

 3   New Libraries

          SYSLIB-like                                 N*

          Z3LIB- and VLIB-like                        Y

          Math                                        Y

          Interface                                   Y

          Communications Protocol                     Y

 4   Use of PDL                                       N*

          Automated Document Generation from PDL      Y

 5   Use of Both Assembly and Turbo Modula-2          N*

 6   New Command Line Interface and User Environment

          New Command Line Interface                Y/N*

          New Process Interface                     Y/N*

 7   Software Configuration Management Procedure    Y/N*

 8   New Applications Environments                  Y/N*



                THESE CONCEPTS IN SOME DETAIL ...


                              ZCPR4
                                                  Vaporware?
 1   No assembly required                             N*



                ZCPR4 Command Processor and BDOS
                --------------------------------

    MAKEZ4   ZCPR4_image    ZCPR4_address    EnvDesc_address

                                |
                                V

             ZCPR4.BIN (Command Processor and BDOS)




                      ZCPR4 System Segments
                      ---------------------

                  PRL (Page ReLocatable) Images

                         NO INSTALLATION

          CUSTOMIZATION BY VARIOUS MEANS (incl EnvDesc)






                           ZCPR4 Tools
                           -----------

      EnvDesc_address et al Passed in Registers from ZCPR4

                         NO INSTALLATION

          CUSTOMIZATION BY VARIOUS MEANS (incl EnvDesc)

      All Interfaces Thru Libraries (no direct BDOS calls)


                              ZCPR4
                                                  Vaporware?
 2   New basics

          ZCPR4 Command Processor                   Y/N*

          BDOS                                        Y



What Exists                   What is Vaporware
-----------                   -----------------

Form of Command Processor     Final Form of Command Processor

Form of BDOS                  Final Form of BDOS

Form of EnvDesc               Final Form of EnvDesc

MAKEZ4

LDR for System Segments

INIT/LDR for System Segments  Final Form of INIT/LDR




                              ZCPR4
                                                  Vaporware?
 3   New Libraries

          SYSLIB-like                                 N*

          Z3LIB- and VLIB-like                        Y

          Math                                        Y

          Interface                                   Y

          Communications Protocol                     Y




     CHARACTERIZED BY SEPARATION OF PROGRAM AND DATA SPACES

              RESULTING CODE IS SMALLER THAN BEFORE




                           Definitions
                           -----------

     SYSLIB, Z3LIB, and VLIB - as under ZCPR3

     Math - integer, long integer (32 bit), floating point

     Interface - Command Processor and BDOS Interface
                 (no BDOS calls by tools)

     Communications - data-link level protocols for XMODEM,
                      YMODEM, Kermit, and Master/Server;
                      higher-level protocols; finite-state
                      machines



                              ZCPR4
                                                  Vaporware?
 4   Use of PDL                                       N*

          Automated Document Generation from PDL      Y


                USING THE PDL AND PRETTY PRINTER
                --------------------------------

    Consistent format and structure of code - Pretty Printer

           Automatic Document Generation - PDL Toolset

         Automatic Online Help Generation - PDL Toolset

        Automatic Design Details Generation - PDL Toolset

 Automatic Module Interface and Interrelationship - PDL Toolset



What is Vaporware?
------------------

     Pretty Printer                N*

     PDL Definition               Y/N*

     PDL Toolset                   Y



                           PDL SAMPLE
                           ----------


;%BEGIN 0
;%Program: XXXXXX, SCAPSTR
;%Author: Richard Conn
;%Version: 1
;%Date: 1 Sep 86
;%Title:    Utilities 2
;%Subtitle: Capitalization
;%Module_Type: DI
;%Revision History:
;1. 1 Sep 86, Richard Conn
;	Initial Release
;%Description:
;
;  CAPSTR -- Capitalize String Pted to by HL
;	This routine simply capitalizes the <NULL>-terminated string
; pointed to by HL.  No Registers are affected.
;
;%END

	public	capstr
	ext	caps

;%BEGIN 1 
;%Label
;%END
CAPSTR:
	push	af		;save regs
	push	hl
CAPSLP:
	ld	a,(hl)		;get char
	or	a		;done?
	jr	z,capsdn
	call	caps		;capitalize it
	ld	(hl),a		;put it back
	inc	hl		;pt to next
	jr	capslp
CAPSDN:
	pop	hl		;get regs
	pop	af
	ret

	end



                              ZCPR4
                                                  Vaporware?
 5   Use of Both Assembly and Turbo Modula-2          N*



               HIGHER-ORDER LANGUAGE USE IMPROVES

                PRODUCTIVITY AND MAINTAINABILITY

           WITH SOME SACRIFICE IN SIZE AND EFFICIENCY




         THE SACRIFICE CAN BE CONTROLLED AND MINIMIZED!


                            Decision
                            --------

              I Can't Have Ada for my ZCPR4 System

                               So

                     I'll Use Turbo Modula-2


           Desired Features of Ada and Turbo Modula-2
           ------------------------------------------
                                             In Ada?   In TM2?
     Package/Module Structure                   Y         Y
          Definition/Implementation Modules               Y
          Visible/Hidden Package Parts          Y

     Separate Compilation                       Y         Y

     Exception Handling                         Y         Y

     Strong Type Checking                       Y         Y(1)

     Good Development Environment               Y(2)      Y
       with Integrated Editor

     Tasking                                    Y         Y(3)

     Generics                                   Y         N

     DoD Support and Funding                    Y         N

  1 - Type Checking is weaker in Turbo Modula-2
  2 - My particular Ada development environment is good (EMACS)
  3 - Tasking is weaker in Turbo Modula-2

                      TURBO MODULA-2 SAMPLE
                      ---------------------

definition module CalSupX;
from CalDefs import
    MONTH,		(* Types *)
    DAY,
    MDAY,
    YEAR,
    DATE,
    CNPTR;

    PROCEDURE SetLeapYear (InYear : YEAR);
    PROCEDURE DayOfWeek (InDate : DATE) : DAY;
    PROCEDURE FindDate (InDay : MDAY; InMonth : MONTH; Start : CNPTR;
        var Found : CNPTR) : boolean;

end CalSupX.

implementation module CalSupX;

       PROCEDURE SetLeapYear (InYear : YEAR);
       begin
          (* ... Detail Left Out ... *)
       end SetLeapYear;

       (* DayCount determines the number of days since 1 Jan of the current
          year *)
       PROCEDURE DayCount (InDate : DATE) : INTEGER;
       var
           ndays : INTEGER;
           imonth : MONTH;
           prevmonth : MONTH;
       begin
               (* ... Detail Left Out ... *)
       end DayCount;

       (* DayOfWeek determines the day of the week by the following
          technique:  ... Detail Left Out ...
       *)
       procedure DayOfWeek (InDate : DATE) : DAY;
          (* ... Detail Left Out ... *)
       end DayOfWeek;

       PROCEDURE FindDate (InDay : MDAY; InMonth : MONTH; Start : CNPTR;
           var Found : CNPTR) : boolean;
          (* ... Detail Left Out ... *)
       end FindDate;

end CalSupX.




                              ZCPR4
                                                  Vaporware?
 6   New Command Line Interface and User Environment

          New Command Line Interface                Y/N*

          New Process Interface                     Y/N*





                         IN DEVELOPMENT



                              ZCPR4
                                                  Vaporware?
 7   Software Configuration Management Procedure    Y/N*




    SOME VERSIONS FROM OTHER APPLICATIONS EXIST AT THIS TIME




                              ZCPR4
                                                  Vaporware?
 8   New Applications Environments                  Y/N*




                          NUMEROUS ...






                ZCPR3 and the Evolution to ZCPR4


                         CLOSING POINTS
                         --------------



          * ZCPR3 IS REAL


          * ZCPR3 3.3 IS REPORTEDLY REAL


          * ZCPR3 3.3 et al REPRESENT CONTINUED COMMERCIAL

               AND PUBLIC SUPPORT TO THE ZCPR3 USER COMMUNITY


          * ZCPR4 IS A MIX OF REALITY AND VAPORWARE

               - EXCITING CONCEPTS

               - NO RELEASE DECISIONS AT THIS TIME


